283. 移动零
283. 移动零
分析
其实就跟 27. 移除元素 差不多,只不过就是多了一步,就是在双指针结束之后,把从慢指针到数组末尾所有的元素都换成 0,其中需要注意的的是,因为双指针 for 循环结束的是,慢指针 slow 指向的就是下一个插入元素的位置(双指针的慢指针就是这个定义),所以再开始循环从慢指针到数组末尾的时候,slow 直接用即可,不需要再加一了。
解法
public void moveZeroes(int[] nums) {
// 首先用双指针法移动元素
int slow=0,fast=0;
for(;fast<nums.length;fast++){
if(nums[fast]!=0){
nums[slow] = nums[fast];
slow++;
}
}
// 然后再从慢指针到快指针设置值
for(;slow<nums.length;slow++){
nums[slow]=0;
}
}
相关题
27. 移除元素
26. 删除有序数组中的重复项
844. 比较含退格的字符串
977. 有序数组的平方
滑动窗口
209. 长度最小的子数组
904. 水果成篮